<?php

/**
 * Index principal do Admin, pagina inicial
 * 
 * @author Matheus Vieira <matheus@magle.com.br>
 * @since 01/02/2012
 */ 

//necessário para todas as páginas do admin (facilitador)
include("defaultAdmin.php");

//mensagens informativas do login
if(isset($_GET["msg"]) && is_numeric($_GET["msg"])){
	switch ($_GET["msg"]){
		case 1:
			$objCtrlSmarty->assign("MENSAGEM_ERRO",MSG_SESSAO_EXPIRADA);
			break;
		case 2:
			$objCtrlSmarty->assign("MENSAGEM_ERRO",MSG_USUARIO_FAIL);
	}
}

if($_GET["a"] == "logout"){
	setcookie("id_usuario_dw", null);
	setcookie("cookie_usuario_dw", null);
}
if(!isset($_GET["a"]))
	$_GET["a"] = "";
	
//primeiro tenho que ver se o usuário está memorizado em uma cookie
if (isset($_COOKIE["id_usuario_dw"]) && isset($_COOKIE["cookie_usuario_dw"])){
    //Tenho cookies memorizadas
    //ademais vou comprovar que essas variáveis não estejam vazias
    if ($_COOKIE["id_usuario_dw"]!="" || $_COOKIE["cookie_usuario_dw"]!=""){
    	//Vou ver se correspondem com algum usuário
      	$objUsrCook = new Usuario();
      	$retorno = $objUsrCook->validaCookie($_COOKIE["id_usuario_dw"], $_COOKIE["cookie_usuario_dw"]);
      	if(!empty($retorno)){
      		$objSessao->setUserSessao(SESSAO_ADMIN, $retorno);
      		if(!empty($_SESSION["tava"])){
				$aux = array();
				foreach ($_SESSION["tava"] as $key => $val){
					$aux[] = $key."=".$val;
				}				
				unset($_SESSION["tava"]);
				HttpUtil::vaiPara(HttpUtil::getLink($menu, $aux));
			}else{
				HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Index", "pos2=url_basica"));
			}
      	}
	}
}
	
switch ($_GET["a"]){
	case "logout":
		//mato a sessão
		$objSessao->dieSessao(SESSAO_ADMIN);
		//redireciono para esta mesma página
		HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Login"));
		break;
	case "logar":
		$objUsuario = new Usuario();
		try{
			//valido os campos de login para qq injection
			
			
			if($_POST["tipoForm"] == "2"){
				$strEmail = FormataCampos::validaCampo($_POST["email"]);
			}else{
				$strUsuario = FormataCampos::validaCampo($_POST["usuario"], 15);
				$strPassw = FormataCampos::validaCampo($_POST["senha"]);

				//verifico o usuário no banco de dados
				$arrUsrLog = $objUsuario->validaUsuarioDB($strUsuario,$strPassw);
				//seto o usuário na sessão
				
				$objSessao->setUserSessao(SESSAO_ADMIN, $arrUsrLog);
				if($_POST["lembrame"] == true){
					 mt_srand (time());
				     //geramos um número aleatorio
				     $numero_aleatorio = mt_rand(1000000,999999999);
				     $objUsuario->salvaCookie($arrUsrLog["id_usuario"], $numero_aleatorio);
				     setcookie("id_usuario_dw", $arrUsrLog["id_usuario"], time()+(60*60*24*365));
      				 setcookie("cookie_usuario_dw", $numero_aleatorio, time()+(60*60*24*365));
				}

				if(!empty($_SESSION["tava"])){
					$aux = array();
					foreach ($_SESSION["tava"] as $key => $val){
						$aux[] = $key."=".$val;
					}				
					unset($_SESSION["tava"]);
					HttpUtil::vaiPara(HttpUtil::getLink($menu, $aux));
				}else{
					HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Index", "pos2=url_basica"));
				}
			}
			
			
		}catch (CustonException $e){
			//caso dá algum erro, redireciono para esta mesma página com a mens de erro.
			HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Login", "msg=2"));
		}
		break;
	case "recuperaSenha":
		$objUsuario = new Usuario();
		try{
		//valido os campos de email para qq injection
		$strEmail = FormataCampos::validaCampo($_POST["email"]);

		//verifico o usuário no banco de dados
		$arrUsrLog = $objUsuario->buscaCampos($strEmail, 0, "email_usuario");
		
		$token = base64_encode($strEmail."||".time());
		
		if(!empty($arrUsrLog)){
			$objMail = new PHPMailer();
			$objMail->SetLanguage("br");
			$objMail->IsMail();
			$objMail->IsHTML(true);
			$objMail->CharSet = "UTF-8";
			$objMail->AddAddress($strEmail);
			$objMail->Body = "
						<html>
						<head>
						 	<title>Token da Senha - ".TITULO_SITE."</title>
						</head>
						<body>
							<p>
								Olá ".$arrUsrLog["nome_usuario"].",
							</p>
							<p>
								 Mude sua senha com este <a href='".HttpUtil::getLink($menu, 'pos1=TrocaSenha', 'a=trocarSenha', 'id='.$token)."'>código temporário</a>. Observe que este link ficará ativo por 
								 apenas 6 horas após o recebimento. Esgotado esse limite de tempo, o código deixará 
								 de funcionar e você precisará reenviar a solicitação de alteração de senha.
								 </p>
							<p>
								Se o link não funcionar, você pode <a href='".HttpUtil::getLink($menu, 'pos1=TrocaSenha', 'a=trocarSenha')."'>digitar o código manualmente</a> usando este token: 
								".$token."
							</p>
						</body>
					</html>";
			$objMail->From = EMAIL_SITE;
			$objMail->FromName = TITULO_SITE;
			$objMail->Subject = "Token da Senha - ". TITULO_SITE;
			$objMail->Send();

			$objCtrlSmarty->assign("MENSAGEM","
				<h2>Mensagem Enviada!</h2>
				<p>Um email foi enviado para o endereço ".$arrUsrLog["email_usuario"].".</p>
				<p>Na mensagem ensina como proceder daqui para frente.</p>");
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLoginEmailEnviado.tpl")));
		}else{
			$objCtrlSmarty->assign("SENHA",true);
			$objCtrlSmarty->assign("MENSAGEM","<h2>Email não cadastrado na nossa base de dados!</h2>");
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLogin.tpl")));
		}
		
		
			
		}catch (CustonException $e){
			//caso dá algum erro, redireciono para esta mesma página com a mens de erro.
			HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Login", "msg=2"));
		}
		break;
	case "trocarSenha":
		if(isset($_GET["id"])){
			$_POST["token"] = $_GET["id"];
		}
		
		if(empty($_POST["token"])){
			$objCtrlSmarty->assign("ACTION_AUX", HttpUtil::getLink($menu, 'pos1=TrocaSenha', 'a=trocarSenha'));
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLoginEmailEnviado.tpl")));
			break;
		}
		
		$params = base64_decode(trim($_POST["token"]));
		$params = explode("||", $params);
		
		$strEmail = trim($params[0]);
		
		$data = getdate(time());
		$data2 = mktime($data["hours"]-6, $data["minutes"], $data["seconds"], $data["mon"], $data["mday"], $data["year"]);

		//verifica se já se passaram 6 horas da emissão do token.
		if($params[1] >= $data2 && isset($params[1])){
			$strJsEsp = "jQuery('.submit-login').click(function(){
				if(jQuery('#senha').val().length < 6){
					alert('A senha deve conter ao menos 6 caracteres.');
					return false;
				}
				if(jQuery('#senha').val() != jQuery('#senha_conf').val()){
					alert('As senhas digitadas devem ser iguais.');
					return false;
				}
			});";
			$objCtrlSmarty->assign("MAILUSER", base64_encode($strEmail));
			$objCtrlSmarty->assign("MENSAGEM","<h2>Alterar Senha!</h2>");
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLoginTrocaSenha.tpl")));
		}elseif($params[1] < $data2 && isset($params[1])){
			$objCtrlSmarty->assign("SENHA",true);
			$objCtrlSmarty->assign("MENSAGEM","<h2>Token Expirado!</h2>");
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLogin.tpl")));
		}else{
			$objCtrlSmarty->assign("MENSAGEM","<h2>Token Inválido!</h2>");
			$objCtrlSmarty->assign("ACTION_AUX", HttpUtil::getLink($menu, 'pos1=TrocaSenha', 'a=trocarSenha'));
			$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLoginEmailEnviado.tpl")));
		}
		
		break;
	case "alteraSenha":
		$_POST["params"] = base64_decode($_POST["params"]);
		
		$objUsrCook = new Usuario();
      	$retorno = $objUsrCook->salvaSenhaDB($_POST["senha"], $_POST["params"]);
      	if($retorno == "salvo"){
      		$arrDados = $objUsrCook->buscaCampos($_POST["params"], 0, "email_usuario");
      		$objSessao->setUserSessao(SESSAO_ADMIN, $arrDados);
			//redireciono para esta mesma página
			HttpUtil::vaiPara(HttpUtil::getLink($menu, "pos1=Index"));
      	}
		break;
	default:
		$objCtrlSmarty->assign("ESTRUTURA",htmlspecialchars_decode($objCtrlSmarty->fetch(TPLS_FILE."admin/adminLogin.tpl")));
		break;
}

$strJsPag = '<script type="text/javascript">
	jQuery(document).ready(function(){
		jQuery("body").attr("id", "login-bg");
		'.$strJsEsp.'
	});
</script>';
$objCtrlSmarty->assign("JS_PAGE",$strJsPag);

//ultima coisa que deve ter no arquivo, serve para imprimir a tela
$objCtrlSmarty->display(TPLS_FILE."../tpls/index.tpl");
?>